🎖️GitЯра🎖️
Mirrored from https://github.com/kc1awv/RetiBBS.git synced 56m ago
BBS over Reticulum
>RetiBBS
An ALPHA bulletin board system (BBS) implementation for Reticulum networks.
RetiBBS allows users to communicate through message boards in a secure manner.
Features
• User authentication and authorization with Reticulum
• Multiple message boards support
• User display names
• Admin privileges for board management
• Simple text-based command interface
• Ephemeral chat room support
Reference Implementation
A reference RetiBBS server implementation is hosted by me, at Kaizen.
Its identity hash is: T383838b40428672a09c6c100ca82c10e5d945f or you can wait for the server to announce itself. The server is connected to the Beleth RNS Hub, which in turn is connected to the Reticulum Testnet.
I will try to keep this reference implementation up to date, usually within a couple hours of any PR merges. This means that the reference server may be unavailable for a short time while the updates are applied.
Installation
1. Clone this repository:
T282828
git clone https://github.com/kc1awv/RetiBBS.git
Tffa657cd RetiBBS
It is strongly suggested to use this alpha software in its own Python virtual environment.
T282828
python -m venv .venv
Tffa657source .venv/bin/activate
2. Install Reticulum Network Stack, LXMF, Textual, and Flask:
T282828
pip install rns lxmf textual flask
3. Install a WSGI server of your choice for the web server:
T282828
pip install gunicornTff7b72||uWSGI
Usage
Running the Server
T282828
Tffa657cd server
python retibbs_server.py Tff7b72[OPTIONSTff7b72]
Server options:
• T383838--reticulum-config: Path to alternative Reticulum config directory (optional)
• T383838--identity-file: Path to store/load server identity (default: server_identity.pem)
• T383838--config-file: Path to server config file (default: server_config.json)
WSGI Web Server:
If you wish to run the web server through a WSGI server, set the configuration options in the server config, and run the web server separately. For example, using gunicorn:
T282828
gunicorn --bind T79c0ff0.0.0.0:5000 wsgi:retibbs_web
Running the Client
T282828
Tffa657cd client
python retibbs_textual.py Tff7b72[OPTIONSTff7b72]
Client options
• T383838--reticulum-config: Path to alternative Reticulum config directory (optional)
• T383838--identity-file: Path to store/load client identity (optional, default: {RNS.Reticulum.storagepath}/retibbsclientidentity)
• T383838--server: Hexadecimal hash of the RetiBBS server to connect to (optional)
Basic Commands
Once connected:
T282828
Main Menu:
? | help - Show help text and available commands
h | hello - Check authorization status
n | name <name> - Set your display name
d | destination <LXMF Address> - Set LXMF destination for board alerts
td | testdestination - Send a test LXMF message
b | boards - Switch to message boards area
c | chat - Switch to chat room area
lo | logout - Log out from the system
### Admin Commands
lu | listusers - List users in DB
a | admin <user_hash> - Grant admin rights to a user
Each area has its own set of commands. Use T383838? or T383838help to get a list of commands for the area you are in.
Configuration
Server Configuration (server_config.json)
T282828
Tb4b4b4{
Tff7b72"server_name"Tb4b4b4: Ta5d6ff"changeme"Tb4b4b4,
Tff7b72"announce_interval"Tb4b4b4: T79c0ff300Tb4b4b4,
Tff7b72"theme"Tb4b4b4: Ta5d6ff"default"Tb4b4b4,
Tff7b72"enable_web_server"Tb4b4b4: Tff7b72falseTb4b4b4,
Tff7b72"use_wsgi"Tb4b4b4: Tff7b72false
Tb4b4b4}
Server Themes
Included with the base code is a default theme in T383838server/themes/default that can be copied to a new folder in order to create a new 'theme' for the BBS. Simply:
T282828
Tffa657cd server/themes
cp -r default/ new_theme/
Tffa657cd new_theme
And edit the text files within. Make sure to update the T383838server_config.json file to point towards the new theme directory.
Using Rich Text Markup in the theme files is probably the easiest way to utilize colors. For example:
T282828
[bold italic]Welcome to[/]
[bold red]
_ __ _
| |/ /__ _(_)_______ _ __
| ' // _\` | |_ / _ \ '_
| . \ (_| | |/ / __/ | | |
|_|\_\__,_|_/___\___|_| |_| 改善
[/]
A Reference RetiBBS Server Instance
-----------------------------------
will produce this on the client:
Clients not up to date with at least commit T38383826bc656 will show the markup. If you see the markup code where colors are expected, please pull the latest commit.
Web Interface
The RetiBBS Server has an optional read-only web server for viewing message boards, and the messages within. To enable the web server, you must at least set the configuration option T383838enable_web_server to T383838True, and optionally enable WSGI operation (more stable this way) with the T383838use_wsgi configuration option set to T383838True.
Client Address Book (address_book.json)
Saved servers are stored in JSON format with server names and hashes.
Example:
T282828
Tb4b4b4{
Tff7b72"019e6ad5a0e47048413c9f7578e83393"Tb4b4b4: Tb4b4b4{
Tff7b72"display_name"Tb4b4b4: Ta5d6ff"Beleth Test"Tb4b4b4,
Tff7b72"hash"Tb4b4b4: Ta5d6ff"019e6ad5a0e47048413c9f7578e83393"Tb4b4b4,
Tff7b72"timestamp"Tb4b4b4: Ta5d6ff"2025-01-01 13:31:08"
Tb4b4b4}
Tb4b4b4}
Development
The codebase is organized into these main components:
• Server (server): Handles client connections, message boards, and user management
• Client (client): Provides the user interface and server connection handling
Security
RetiBBS utilizes Reticulum's built-in encryption and authentication mechanisms to ensure secure communication between clients and servers.
Requirements
Served by rngit 1.4.2 - Generated in 0.05s